package database

import (
	"fmt"
	"gitee.com/wang-xiangyu20000112/vblog/config"
	_ "github.com/go-sql-driver/mysql"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"log"
	"time"
)

// 创建全局数据库链接
var DB *gorm.DB

// 初始化连接配置
func GetMysqlConnection() {

	// 连接数据库
	gdb, err := gorm.Open(mysql.Open(getDsn()),
		&gorm.Config{Logger: logger.Default.LogMode(logger.Info)})
	if err != nil {
		log.Fatal(err)
	}

	// 设置数据链接参数
	sqlDB, _ := gdb.DB()
	// 最大连接数
	sqlDB.SetMaxOpenConns(10)
	// 最大空闲连接数
	sqlDB.SetConnMaxIdleTime(5)
	// 超时时间
	sqlDB.SetConnMaxLifetime(time.Second * 10)

	DB = gdb
}

// 拼接链接地址
func getDsn() string {
	return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		config.GlobalConfig.Mysql.Username,
		config.GlobalConfig.Mysql.Password,
		config.GlobalConfig.Mysql.Host,
		config.GlobalConfig.Mysql.Port,
		config.GlobalConfig.Mysql.Database)
}
